-
Notifications
You must be signed in to change notification settings - Fork 250
[ refactor ] Data.Fin.Properties
of decidable equality, plus knock-ons
#2740
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
In the absence of a review yet, I'll lift out the bug fixes as a separate PR, as per @JacquesCarette 's comment on #2743 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Otherwise looks good!
punchIn (π ⟨$⟩ʳ i) (punchOut (punchInᵢ≢i i (punchOut i≢j) ∘ sym ∘ Injection.injective (↔⇒↣ π))) ≡⟨ punchIn-punchOut _ ⟩ | ||
π ⟨$⟩ʳ punchIn i (punchOut i≢j) ≡⟨ cong (π ⟨$⟩ʳ_) (punchIn-punchOut i≢j) ⟩ | ||
π ⟨$⟩ʳ j ∎ | ||
punchIn (π ⟨$⟩ʳ i) (punchOut (punchInᵢ≢i i (punchOut i≢j) ∘ sym ∘ Injection.injective (↔⇒↣ π))) ≡⟨ punchIn-punchOut _ ⟩ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is funny alignment.
≡-irrelevant = Decidable⇒UIP.≡-irrelevant _≟_ | ||
|
||
≟-diag : (eq : i ≡ j) → (i ≟ j) ≡ yes eq | ||
≟-diag = ≡-≟-identity _≟_ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would vote for calling this ≟-diag-≡
and ≟-off-diag
as ≟-diag-≢
for consistency? Actually do we even need the diag
in the names? Doesn't really do much...
@@ -42,17 +34,31 @@ transpose i j k with does (k ≟ i) | |||
-- Properties | |||
------------------------------------------------------------------------ | |||
|
|||
transpose-iij : ∀ {n} (i j : Fin n) → transpose i i j ≡ j |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Normal naming conventions would probably be transpose[i,i,j]≡j
? Same for the three below?
This PR supersedes the knock-on changes for
Permutation
in #2738 and adds some new lemmas abouttranspose
which simplify the dependency graph. The contribution can be seen as a belated corollary to the changes introduced in #645 / #1732 .Downstream, we might want to revisit the dependency graph now between
Relation.Nullary.Decidable
Axiom.UniquenessOfIdentityProofs
Relation.Binary.PropositionalEquality
in putting these pieces together?
Outstanding (naming) issue: I followed the existing
Data.Nat.Properties.≟-diag
convention inData.Fin.Properties
, and then backported therefl
instantiation of this toData.Nat.Properties.≟-diag-refl
... but it occurs to me that it's hard to imagine instances of≟-diag
which would use a general equality, and even if they were to, the use ofdiag
ought (?) to be a codeword for a repeated argument/reflexive equality? I just couldn't face the deprecation headache though... so a v3.0 downstreambreaking
change might be in order?